public class TestBinaryTree {
    static class TreeNode {
        public char val;
        public TreeNode left; //左孩子的引用
        public TreeNode right; //右孩子的引用


        public TreeNode(char val) {
            this.val = val;
        }
    }

    public TreeNode createTree() {

        TreeNode A = new TreeNode('A');
        TreeNode B = new TreeNode('B');
        TreeNode C = new TreeNode('C');
        TreeNode D = new TreeNode('D');
        TreeNode E = new TreeNode('E');
        TreeNode F = new TreeNode('F');
        TreeNode G = new TreeNode('G');
        TreeNode H = new TreeNode('H');

        A.left = B;
        A.right = C;
        B.left = D;
        B.right = E;
        C.left = F;
        C.right = G;
        E.right = H;

        return A;//就是我的根节点
    }


        //前序遍历
        public void preOrder(TreeNode root){
            if (root==null){
                return;
            }
            System.out.println(root.val+" ");
            //递归遍历左子树
            preOrder(root.left);
            //递归遍历右子树
            postOrder(root.right);

        }

        //中序遍历
        public void inOrder(TreeNode root){
           if (root==null){
               return;
           }
           inOrder(root.left);
           System.out.println(root.val+" ");
           inOrder(root.right);
        }

        //后序遍历
        public void postOrder(TreeNode root){
         if (root==null){
             return;
         }
         postOrder(root.left);
         preOrder(root.right);
            System.out.println(root.val+" ");
        }

        // 获取树中结点个数
    public int size(TreeNode root){
        if(root==null){
            return 0;
        }
        int ret =size(root.left)+size(root.right)+1;
        return ret;
    }

    public static int nodSize;
    public void size2(TreeNode root){
        if (root==null){
            return;
        }
        nodSize++;
        size2(root.left);
        size2(root.right);
    }

    /**
     * 求叶子结点个数
     */
public int getLeafNodeCount(TreeNode root){
    if (root==null){
        return 0;
    }
    if (root.left==null&&root.right==null){
        return 1;
    }
    return getLeafNodeCount(root.left)
            + getLeafNodeCount(root.right);
}





    }



